package com.kanshu.kanshu; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.kanshu.kanshu.model.User; import de.hdodenhof.circleimageview.CircleImageView; public class NavigationDrawerListAdapter extends ArrayAdapter<String> { private Activity parentContext; public NavigationDrawerListAdapter(Context context, int resource, String[] objects) { super(context, resource, objects); parentContext = (Activity) context; } public View getView(int position, View convertView, ViewGroup parent) { final Typeface robotoMedium = Typeface.createFromAsset(parentContext.getAssets(), "fonts/Roboto-Medium.ttf"); // First let's verify the convertView is not null if (convertView == null) { // This a new view we inflate the new layout LayoutInflater inflater = (LayoutInflater) parentContext.getSystemService(Context .LAYOUT_INFLATER_SERVICE); switch (position % 5) { case 0: convertView = inflater.inflate(R.layout.navigation_drawer_user_card, parent, false); break; case 1: convertView = inflater.inflate(R.layout.navigation_drawer_section_1, parent, false); break; case 2: convertView = inflater.inflate(R.layout.navigation_drawer_section_2, parent, false); break; case 3: convertView = inflater.inflate(R.layout.navigation_drawer_section_3, parent, false); break; case 4: convertView = inflater.inflate(R.layout.navigation_drawer_section_4, parent, false); break; } if (position == 0) { CircleImageView pictureFrame = (CircleImageView) convertView.findViewById(R.id .user_avatar); LinearLayout linearLayout = (LinearLayout) convertView.findViewById(R.id .user_card_layout); //replace this with user avatar bitmap Bitmap profile = BitmapFactory.decodeResource(parentContext.getResources(), R.drawable.kanshu); pictureFrame.setImageBitmap(profile); Bitmap filteredBitmap = Bitmap.createBitmap(profile.getWidth(), profile.getHeight(), Bitmap.Config.RGB_565); Canvas c = new Canvas(filteredBitmap); Paint red = new Paint(); red.setColor(parentContext.getResources().getColor(R.color.primary_dark_red)); c.drawRect(0, 0, profile.getWidth(), profile.getHeight(), red); Paint paint = new Paint(); float[] mat = new float[]{ 0.5f, 0.5f, 0.5f, 0, 0, 0.5f, 0.5f, 0.5f, 0, 0, 0.5f, 0.5f, 0.5f, 0, 0, 0, 0, 0, 0.2f, 0,}; ColorMatrixColorFilter filter = new ColorMatrixColorFilter(mat); paint.setColorFilter(filter); c.drawBitmap(profile, 0, 0, paint); ImageView backgroundFrame = (ImageView) convertView.findViewById(R.id.background); backgroundFrame.setImageBitmap(filteredBitmap); //other user info User userData = ((NavigationDrawerFragment.NavigationDrawerData) parentContext) .getCurrentUser(); TextView username = (TextView) convertView.findViewById(R.id.user_name); username.setText(userData.getUserName()); TextView userlevel = (TextView) convertView.findViewById(R.id.user_level); userlevel.setText(userData.getUserLevel()); userlevel.setTypeface(robotoMedium); username.setTypeface(robotoMedium); } else { LinearLayout linearLayout = (LinearLayout) convertView; for (int i = 0; i < linearLayout.getChildCount(); i++) { if (linearLayout.getChildAt(i) instanceof TextView) ((TextView) linearLayout.getChildAt(i)).setTypeface(robotoMedium); } } } return convertView; } }